In networking systems, a single machine, for example, a server or a client, may be utilized to concurrently support multiple server operations or services. For example, a single server may be utilized for providing access to business applications while also operating as an email server, a database server, and/or an exchange server. The server may generally support the various server operations by utilizing a single operating system (OS). The server operations, via the single OS, make use of server processing resources such as the central processing unit (CPU), memory, network interface card (NIC), peripheral sound card, and/or graphics card, for example. In many instances, the server resources may not be efficiently utilized because the demand for server operations generally vary based on the type of service provided and/or user needs. Consolidating server services into a single physical machine may result in an improvement in server efficiency. However, consolidation also removes the level of protection that is provided when the operations are maintained separately. For example, when the operations are consolidated, a crash or failure in a database server may also result in the loss of email services, exchange services, and/or application services.
Another approach for improving server efficiency may be to utilize multiple operating systems running concurrently so that each operating system supports a different server operation or application or service, for example. The multiple operating systems may be referred to as guest operating systems (GOSs) or child partitions. This approach maintains the level of protection provided when server operations are not consolidated under a single operating system while also enabling the optimization of the usage of the processing resources available to the server. The use of multiple guest operating systems may be referred to as OS virtualization because each GOS perceives to have full access to the server's hardware resources. In this regard, a GOS is unaware of the presence of any other GOS running on the server. In order to implement OS virtualization, a software layer may be needed to arbitrate access to the server's hardware resources. This software layer may be referred to as a hypervisor or virtual machine (VM) monitor, for example. The hypervisor may enable the multiple GOSs to access the hardware resources in a time-sharing manner. This software layer may be assisted by a trusted GOS (TGOS), which may also be referred to as a parent partition, or Virtual Machine Kernel (VMK) for instance.
The NIC may be a hardware resource that is frequently utilized by at least one of the server operations or services. In this regard, a hypervisor or VM monitor may enable creating a software representation of NIC that may be utilized by a GOS. This software representation of the NIC may be referred to as a “virtual NIC.” However, a virtual NIC may not be able to offer a full set of features or functionalities of the hardware NIC to a GOS. For example, a virtual NIC may only be able to provide basic layer 2 (L2) networking functionality to a GOS. The virtual NIC may be limited to providing data communication between a GOS and the network through another SW entity, such as a TGOS or VMK. In this regard, the virtual NIC may not be able to support other advanced features such as remote direct memory access (RDMA) and/or Internet small computers system interface (iSCSI), directly to the GOS for example. Additionally, data may be copied among a plurality of buffers prior to transmission to a network by the NIC or after reception from a network by the NIC. The copying of data may be an overhead to, for example, a host processor.
Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of skill in the art, through comparison of such systems with some aspects of the present invention as set forth in the remainder of the present application with reference to the drawings.